package com.mzq.langchain4j_springboot.web.service.Impl;

import com.mzq.langchain4j_springboot.web.mapper.SysUserMapper;
import com.mzq.langchain4j_springboot.web.mapper.ToolsMapper;
import dev.langchain4j.agent.tool.P;
import dev.langchain4j.agent.tool.Tool;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class ToolsService {
    @Resource
    private ToolsMapper toolsMapper;
    //1.请分析津燃华润燃气有限公司是那几家公司的股东，各出资多少，股份占比多少？  1
    @Tool("当输入问题是：请分析某家公司是哪几家公司的股东")
    public List<Map<String,String>> A(
            //告诉ai需要提取的信息
            @P("公司名")String name){
        //todo 调用业务方法 数据库操作
        System.out.println("name=========>"+name);
        List<Map<String,String>> maps = toolsMapper.selectA(name);
        System.out.println("maps===========>"+maps);
        return maps;
    }
//    //2.请分析由天津能源投资集团有限公司全资控股的电力板块公司有哪几家，注册资本为多少   2
//    @Tool("当输入问题是：请分析由某家公司何种控股方式的何种板块公司有哪几家")
//    public List<Map<String,String>> B(
//            //告诉ai需要提取的信息
//            @P("控股方式")String name,
//            @P("控股方式")String ratio,
//            @P("板块名")String sector){
//        //todo 调用业务方法 数据库操作
//        //todo 控股 板块字典
//        System.out.println("name=========>"+name);
//        System.out.println("name=========>"+ratio);
//        System.out.println("name=========>"+sector);
//        List<Map<String,String>> maps = toolsMapper.selectB(name,"1","2");
//        return maps;
//    }

    //3.请分析由天津能源投资集团有限公司投资的电力板块公司有哪几家，注册资本为多少，占比多少  跟第二个问题重合 可以合并  4
    @Tool("当输入问题是：请分析由某家公司何种投资方式的何种板块公司有哪几家")
    public List<Map<String,String>> C(
            //告诉ai需要提取的信息
            @P("公司名")String name,
            @P("投资方式")String labelA,
            @P("板块名")String labelB){
        //todo 调用业务方法 数据库操作
        List<Map<String,String>> maps = toolsMapper.selectC(name,labelA,labelB);
        return maps;
    }
    //4.请分析由天津能源投资集团有限公司全资控股的新能源板块公司有哪几家，主营业务有哪些？
//    @Tool("请分析由天津能源投资集团有限公司全资控股的何种板块公司有哪几家")
//    public String D(
//            //告诉ai需要提取的信息
//            @P("板块名")String sector){
//        //todo 调用业务方法 数据库操作
//        System.out.println("name=========>"+sector);
//        return "1";
//    }
    //5.请详细介绍财务公司的各项信息？  5
    @Tool("当输入问题是：请详细介绍某家公司的各项信息")
    public List<Map<String,String>> E(
            //告诉ai需要提取的信息
            @P("公司名")String name){
        //todo 调用业务方法 数据库操作
        List<Map<String,String>> maps = toolsMapper.selectE(name);
        return maps;
    }
    //6.请问那几家公司的主营业务为燃气供应？ 6
    @Tool("当输入问题是：请问哪几家公司的主营业务为某种业务")
    public List<Map<String,String>> F(
            //告诉ai需要提取的信息
            @P("业务名")String name){
        //todo 调用业务方法 数据库操作
        System.out.println("name=========>"+name);
        List<Map<String,String>> maps = toolsMapper.selectF(name);
        return maps;
    }
//    //7.请盘点由天津能源投资集团有限公司间接控股的公司？
//    @Tool("请盘点由某公司何种控股方式的公司")
//    public String G(
//            //告诉ai需要提取的信息
//            @P("公司名")String name,
//            @P("控股方式")String businessType
//            ){
//        //todo 调用业务方法 数据库操作
//        System.out.println("name=========>"+name);
//        System.out.println("businessType=========>"+businessType);
//        return "有3家";
//    }
    //8.请分析渤海证券股份有限公司的股权结构？ 8
    @Tool("当输入问题是：请分析某公司的股权结构")
    public List<Map<String,String>> H(
            //告诉ai需要提取的信息
            @P("公司名")String name
    ){
        //todo 调用业务方法 数据库操作
        System.out.println("name=========>"+name);
        List<Map<String,String>> maps = toolsMapper.selectH(name);
        return maps;
    }
    //9.请分析天津津燃公用事业股份有限公司共投资了几家公司（xxx是哪几家公司的股东）？
    @Tool("当输入问题是：请分析某公司共投资几家公司")
    public List<Map<String,String>> I(
            //告诉ai需要提取的信息
            @P("公司名")String name
    ){
        //todo 调用业务方法 数据库操作
        System.out.println("name=========>"+name);
        List<Map<String,String>> maps = toolsMapper.selectI(name);
        return maps;
    }
    //10.请分析由天津市津能投资有限公司全资控股的公司有哪几家
    @Tool("当输入问题是：请分析由某公司何种控股方式的公司有哪几家")
    public List<Map<String,String>> J(
            //告诉ai需要提取的信息
            @P("公司名")String name,
            @P("控股方式")String businessType
    ){
        //todo 调用业务方法 数据库操作
        System.out.println("name=========>"+name);
        System.out.println("businessType=========>"+businessType);
        List<Map<String,String>> maps = toolsMapper.selectI(name);
        return maps;
    }
//    //11.请分析天津能源投资集团与天津市津能投资有限公司的关系
//    @Tool("当输入问题是：请分析某公司与某公司的关系")
//    public String J(
//            //告诉ai需要提取的信息
//            @P("公司名")String name1,
//            @P("公司名")String name2
//    ){
//        //todo 调用业务方法 数据库操作
//        System.out.println("name=========>"+name1);
//        System.out.println("businessType=========>"+name2);
//        return "全资控股的关系";
//    }
//    //12.请分析由天津滨海燃气集团有限公司全资控股的公司有哪几家
//    @Tool("当输入问题是：请分析由天津滨海燃气集团有限公司全资控股的公司有哪几家")
//    public String K(
//            //告诉ai需要提取的信息
//            @P("公司名")String name1,
//            @P("公司名")String name2
//    ){
//        //todo 调用业务方法 数据库操作
//        System.out.println("name=========>"+name1);
//        System.out.println("businessType=========>"+name2);
//        return "全资控股的关系";
//    }
//    14.请盘点燃气板块中各个公司的行业分类占比数据
    @Tool("当输入问题是：请盘点某板块中各个公司的行业分类占比数据")
    public List<Map<String,String>> K(
            //告诉ai需要提取的信息
            @P("板块名")String ratio
    ){
        //todo 调用业务方法 数据库操作
        System.out.println("name=========>"+ratio);
        List<Map<String,String>> maps = toolsMapper.selectM(ratio);
        return maps;
    }
}
